package com.itheima.d5_resource;

/**
 * 目标：认识try-catch-finally。
 *
 * try {    ...
 *     ... 	} catch (IOException e) {
 *     e.printStackTrace();
 * }finally{
 *
 *}
 *  finally代码区的特点：无论try中的程序是正常执行了，还是出现了异常，最后都一定会执行finally区，除非JVM终止。
 *
 *  作用：一般用于在程序执行完成后进行资源的释放操作（专业级做法）。
 */
public class Test1 {
    public static void main(String[] args) {
        try {
            System.out.println(10 / 2);
            // return; // 跳出方法的执行
            // System.exit(0); // 让虚拟机停止
        }catch (Exception e){
            e.printStackTrace();
        } finally {
            System.out.println("===finally执行了一次===");
        }

        System.out.println(chu(10, 2));
    }

    public static int chu(int a, int b){
        try {
            return a / b;
        }catch (Exception e){
            e.printStackTrace();
            return -1; //该返回代表的是出现异常
        }finally {
            // 千万不要在finally中返回数据！
            //分析：因为try里面要返回结果，也就会跳出方法的执行，但是finally一定要执行一次，就会让try里面的return等一等，
            // 先执行finally，但是finally里面直接返回111了，就造成了把try里面的return的语句给覆盖掉了，返回的永远是finally的结果
            return 111;
        }
    }
}
